home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 December / PCWorld_2005-12_cd.bin / software / temacd / tiny / tpf-6[1].5.126.exe / Tiny Firewall 2005.msi / webui.dll / FIREWALL / FWN-TOOLS.JS < prev    next >
Encoding:
Text (UTF-16)  |  2005-08-17  |  40.0 KB  |  799 lines

  1. /*//////////////////////////////////////////////////////////////////////
  2. Filename:          fwn-tools.js
  3. Company Name:      Computer Associates International, Inc.
  4. Legal Copyright: Copyright (c) Computer Associates International, Inc.
  5. Author:          Marek Matus (marek.matus@ca.com)
  6. Product:          Tiny Firewall
  7. Description:      javascript code - help functions for FW
  8. ///////////////////////////////////////////////////////////////////////*/
  9.  
  10. function getAppListArray( bUseClientParser, bGroups)
  11. {
  12.     var arList = eval(transformXMLWithParamsEx( XM_APPREP, bUseClientParser, "../firewall/fwn-tools.xsl", "templateName=" + (bGroups? "getAppGroupListArray" : "getAppListArray")));
  13.     
  14.     if ( bGroups )
  15.     {
  16.         var arList2 = new Array();
  17.         
  18.         for (var i = 0; i < arList.length; i++)
  19.         {
  20.             if ( !isSystemAppRepGroup( arList[i] ))
  21.                 arList2.push( arList[i] );
  22.         }
  23.         
  24.         return arList2;
  25.     }
  26.     else
  27.         return arList;
  28. }
  29.  
  30. function getAppOptionList( bUseClientParser, bGroups)
  31. {
  32.     var arList = getAppListArray(bUseClientParser, bGroups);
  33.     var retHTML = '';
  34.     
  35.     for (var i = 0; i < arList.length; i++)
  36.     {
  37.         if ( bGroups )
  38.         {
  39.             if ( !isSystemAppRepGroup( arList[i] ))
  40.                 retHTML += '<option value="g:' + stringToHTMLValue(arList[i]) + '">'+ arList[i] + '</option>';
  41.         }
  42.         else
  43.             retHTML += '<option value="a:' + stringToHTMLValue(arList[i]) + '">'+ arList[i] + '</option>';
  44.     }
  45.         
  46.     return retHTML;
  47. }
  48.  
  49. function getTransportList( bUseClientParser, bOnlyInDir )
  50. {
  51.     if ( bOnlyInDir )
  52.         return eval(transformXMLWithParamsEx( XM_FW, bUseClientParser, "../firewall/fwn-tools.xsl", "templateName=getTransportListArrayInDir"));
  53.     else
  54.         return eval(transformXMLWithParamsEx( XM_FW, bUseClientParser, "../firewall/fwn-tools.xsl", "templateName=getTransportListArray"));
  55. }
  56.  
  57. function getWordList( bUseClientParser )
  58. {
  59.     return eval(transformXMLWithParamsEx( XM_FW, bUseClientParser, "../firewall/fwn-tools.xsl", "templateName=getWordListArray"));
  60. }
  61.  
  62. function getWordListOption( bUseClientParser )
  63. {
  64.     var arList =  getWordList(bUseClientParser);
  65.     var retHTML = '';
  66.     
  67.     for (var i = 0; i < arList.length; i++)
  68.         retHTML += '<option value="' + stringToHTMLValue(arList[i]) + '">'+ arList[i] + '</option>';
  69.         
  70.     return retHTML;
  71. }
  72.  
  73. function getTransportOptionList( bUseClientParser )
  74. {
  75.     var arList =  getTransportList(bUseClientParser);
  76.     var retHTML = '';
  77.     
  78.     for (var i = 0; i < arList.length; i++)
  79.         retHTML += '<option value="' + stringToHTMLValue(arList[i]) + '">'+ arList[i] + '</option>';
  80.         
  81.     return retHTML;
  82. }
  83.  
  84. function getTransportListTCPUDP( bUseClientParser, bOnlyInDir )
  85. {
  86.     if ( bOnlyInDir )
  87.         return eval(transformXMLWithParamsEx( XM_FW, bUseClientParser, "../firewall/fwn-tools.xsl", "templateName=getTransportListArrayTCPUDPDirIn"));
  88.     else
  89.         return eval(transformXMLWithParamsEx( XM_FW, bUseClientParser, "../firewall/fwn-tools.xsl", "templateName=getTransportListArrayTCPUDP"));
  90. }
  91.  
  92. function getTransportOptionListTCPUDP( bUseClientParser )
  93. {
  94.     var arList =  getTransportListTCPUDP(bUseClientParser);
  95.     var retHTML = '';
  96.     
  97.     for (var i = 0; i < arList.length; i++)
  98.         retHTML += '<option value="' + stringToHTMLValue(arList[i]) + '">'+ arList[i] + '</option>';
  99.         
  100.     return retHTML;
  101. }
  102.  
  103. function addPROTOOptionListDOM( objSelect, bUseClientParser, bRoutedMode, bOnlyInDir )
  104. {
  105.     var arList = (bRoutedMode? getTransportListTCPUDP(bUseClientParser, bOnlyInDir) : getTransportList( bUseClientParser, bOnlyInDir ));
  106.     var retHTML = '';
  107.     
  108.     for (var i = 0; i < arList.length; i++)
  109.         addOptionDOM(objSelect, arList[i], arList[i])
  110. }
  111.  
  112. function getIPList( bUseClientParser )
  113. {
  114.     return eval(transformXMLWithParamsEx( XM_FW, bUseClientParser, "../firewall/fwn-tools.xsl", "templateName=getIPListArray"));
  115. }
  116.  
  117. function getIPOptionList( bUseClientParser )
  118. {
  119.     var arList =  getIPList(bUseClientParser);
  120.     var retHTML = '';
  121.     
  122.     for (var i = 0; i < arList.length; i++)
  123.         retHTML += '<option value="' + stringToHTMLValue(arList[i]) + '">'+ arList[i] + '</option>';
  124.         
  125.     return retHTML;
  126. }
  127.  
  128. function addIPOptionListDOM( objSelect, bUseClientParser )
  129. {
  130.     var arList =  getIPList(bUseClientParser);
  131.     
  132.     for (var i = 0; i < arList.length; i++)
  133.         addOptionDOM(objSelect, arList[i], arList[i])
  134. }
  135.  
  136. function IP_getIPAddressObj( sPrefix )
  137. {
  138.     var addrIP = '';
  139.     var addrIPID = '';
  140.     
  141.     if ( formAdd.elements[sPrefix + '_TYPE'].value == "*")
  142.         addrIP = "*";
  143.     else if ( formAdd.elements[sPrefix + '_TYPE'].value == "pre")
  144.         addrIPID = formAdd.elements[sPrefix + 'IP_PRE'].value;
  145.     else if ( formAdd.elements[sPrefix + '_TYPE'].value == "direct")
  146.         addrIP = formAdd.elements[sPrefix + 'IP_DIRECT'].value;
  147.         
  148.     var oIP = new Object()
  149.     
  150.     oIP.ip = addrIP;
  151.     oIP.ipID = addrIPID;
  152.     
  153.     return oIP;
  154. }
  155.  
  156. function IP_ShowEditDlgIPAddress(strObjID, bClientParser)
  157. {
  158.     external.CfgRegValueString("fwn-ipaddr-edit.html_params") = "?objid=" + escape(strObjID) + "&cp=" + bClientParser;
  159.     
  160.     var arParams = new Array();
  161.  
  162.     arParams[0] = external;
  163.     
  164.     var sFeatures="dialogHeight: 215px; dialogWidth: 565px; help:no; status:no; resizable:no; center:yes;";
  165.  
  166.     var arRetVal = window.showModalDialog( 'fwn-ipaddr-edit.html', arParams, sFeatures );
  167.     
  168.     if ( arRetVal && arRetVal[0] && arRetVal[1])
  169.         return arRetVal[1];
  170.         
  171.     return '';
  172. }
  173.  
  174. function IP_ShowEditDlgIPAddressItem( strInit )
  175. {
  176.     var arParams = new Array();
  177.  
  178.     arParams[0] = external;
  179.     arParams[1] = strInit;
  180.     
  181.     var sFeatures="dialogHeight: 240px; dialogWidth: 275px; help:no; status:no; resizable:no; center:yes;";
  182.  
  183.     var arRetVal = window.showModalDialog( 'fwn-ipaddr-edit-item.html', arParams, sFeatures );
  184.     
  185.     if ( arRetVal && arRetVal[0] )
  186.         return arRetVal[0];
  187.         
  188.     return '';
  189. }
  190.  
  191. // We do not know if it is from server/client database! Server database is preferred.
  192. function IP_editIPObjFromEditRule( strObjID, bClientRule )
  193. {
  194.     if ( !strObjID )
  195.         return; 
  196.         
  197.     if ( isSPEditable() )
  198.     {
  199.         var definitionList = getDefinitionList(false);
  200.  
  201.         try
  202.         {
  203.             var definition = definitionList.Get( strObjID );
  204.             
  205.             IP_ShowEditDlgIPAddress(strObjID);
  206.             return;
  207.         }
  208.         catch (e)
  209.         {
  210.         }
  211.     }
  212.     
  213.     if ( bClientRule )
  214.     {
  215.         var definitionList = getDefinitionList(true);
  216.  
  217.         try
  218.         {
  219.             var definition = definitionList.Get( strObjID );
  220.             
  221.             IP_ShowEditDlgIPAddress(strObjID, true);
  222.             return;
  223.         }
  224.         catch (e)
  225.         {
  226.         }
  227.     }
  228.     
  229.     alert( processMsg( getStr('','STR_MSG_CANNOT_EDIT_PRE_OBJ'), strObjID ));
  230. }
  231.  
  232. function IP_addIPObjToSelect(selID, bUseCP)
  233. {
  234.     var bClientParser = !isSPEditable();
  235.     var strNewObj = IP_ShowEditDlgIPAddress('', bClientParser);
  236.     
  237.     if ( strNewObj )
  238.         IP_initIPObjSelect(selID, strNewObj, bUseCP);
  239. }
  240.  
  241. function IP_initIPObjSelectByRef(objSelect, strObj, bUseCP)
  242. {
  243.     if ( objSelect )
  244.     {
  245.         clearOptionsDOM( objSelect );
  246.         
  247.         addOptionDOM(objSelect, '', getStr('fw','STR_VPN_N_SEL_PRE'))
  248.                     
  249.         if ( bUseCP )
  250.         {
  251.             addOptionDOM(objSelect, '', getStr('','STR_OPT_SEL_USER_OBJ'), COLOR_DB_ROW);
  252.             addIPOptionListDOM( objSelect, true );
  253.             addOptionDOM(objSelect, '', getStr('','STR_OPT_SEL_COMMON_OBJ'), COLOR_DB_ROW);
  254.         }
  255.  
  256.         addIPOptionListDOM( objSelect, false );
  257.         
  258.         if ( strObj )
  259.             objSelect.value = strObj;
  260.             
  261.         if ( !objSelect.value )
  262.             objSelect.selectedIndex = 0;
  263.     }
  264.  
  265. }
  266.  
  267. function IP_getFloatMenuBtns( strFormName, strDirectFnc, bUseClientParser, strFncAddObj)
  268. {
  269.     var strHTML = '';
  270.                 
  271.     strHTML += '<input type="submit" class="MenuItemButton" value="' + getStr('','STR_DLG_IP_ALL') + '" onmouseover="this.className=\'MenuItemButtonOn\'\" onmouseout=\"this.className=\'MenuItemButton\'\" onclick=\"' + strFormName + '.elements[\'value\'].value = \'*\';\"><br>';
  272.     
  273.     strHTML += '<input style="color: ' + COLOR_DIRECT_ROW + '" type="button" class="MenuItemButton" value="' + getStr('','STR_OPT_SEL_SPEC_DIR') + '" onmouseover="this.className=\'MenuItemButtonOn\'" onmouseout="this.className=\'MenuItemButton\'" onclick="' + strDirectFnc + ';"><br>';
  274.  
  275.     if ( bUseClientParser )
  276.     {
  277.         strHTML += '<span style="font-weight: bold; color: ' + COLOR_DB_ROW + '">' + getStr('','STR_OPT_SEL_USER_OBJ') + '</span><br>';
  278.         
  279.         if ( strFncAddObj )
  280.             strHTML += '<input style="color: ' + COLOR_DIRECT_ROW + '" type="button" class="MenuItemButton" value="' + getStr('','STR_OPT_SEL_ADD_CLIENT_OBJ') + '" onmouseover="this.className=\'MenuItemButtonOn\'" onmouseout="this.className=\'MenuItemButton\'" onclick="' + strFncAddObj + '(true)"><br>'
  281.         var arList = getIPList(true);
  282.  
  283.         for (var i = 0; i < arList.length; i++)
  284.             strHTML += '<input type="submit" class="MenuItemButton" style="width: 100%" value="' + stringToHTMLValue(arList[i]) + '" onmouseover="this.className=\'MenuItemButtonOn\'" onmouseout="this.className=\'MenuItemButton\'" onclick="' + strFormName + '.elements[\'valueID\'].value = \'' + stringToHTML(arList[i]) +'\'"><br>';
  285.  
  286.         strHTML += '<span style="font-weight: bold; color: ' + COLOR_DB_ROW + '">' + getStr('','STR_OPT_SEL_COMMON_OBJ') + '</span><br>';
  287.     }
  288.     
  289.     if ( isSPEditable() && strFncAddObj )
  290.         strHTML += '<input style="color: ' + COLOR_DIRECT_ROW + '" type="button" class="MenuItemButton" value="' + getStr('','STR_OPT_SEL_ADD_COMMON_OBJ') + '" onmouseover="this.className=\'MenuItemButtonOn\'" onmouseout="this.className=\'MenuItemButton\'" onclick="' + strFncAddObj + '(false)"><br>'
  291.     
  292.     var arList =  getIPList(false);
  293.     
  294.     for (var i = 0; i < arList.length; i++)
  295.         strHTML += '<input type="submit" class="MenuItemButton" style="width: 100%" value="' + stringToHTMLValue(arList[i]) + '" onmouseover="this.className=\'MenuItemButtonOn\'" onmouseout="this.className=\'MenuItemButton\'" onclick="' + strFormName + '.elements[\'valueID\'].value = \'' + stringToHTML(arList[i]) +'\'"><br>';    
  296.         
  297.     return strHTML;
  298. }
  299.  
  300. function IP_initIPObjSelect(selID, strObj, bUseCP)
  301. {
  302.     IP_initIPObjSelectByRef(getObj(selID), strObj, bUseCP)
  303. }
  304.  
  305. function getTimeList()
  306. {
  307.     return eval(transformXMLWithParamsEx( XM_FW, false, "../firewall/fwn-tools.xsl", "templateName=getTimesListArray"));
  308. }
  309.  
  310. function getTimeOptionList()
  311. {
  312.     var arList =  getTimeList();
  313.     var retHTML = '';
  314.     
  315.     for (var i = 0; i < arList.length; i++)
  316.         retHTML += '<option value="' + stringToHTMLValue(arList[i]) + '">'+ arList[i] + '</option>';
  317.         
  318.     return retHTML;
  319. }
  320.  
  321. function addTimeOptionListDOM( objSelect )
  322. {
  323.     var arList =  getTimeList();
  324.     
  325.     for (var i = 0; i < arList.length; i++)
  326.         addOptionDOM(objSelect, arList[i], arList[i])
  327. }
  328.  
  329. function isObjNameUnique( strName, bUseClientParser )
  330. {
  331.     return parseBoolean(transformXMLWithParamsEx( XM_FW, bUseClientParser, "../firewall/fwn-tools.xsl", "templateName=isObjNameUnique&name=" + escape(strName)));
  332. }
  333.  
  334. function PROTO_initObjSelect(selID, strObj, bUseCP, bDirectRow, bRoutedMode, bOnlyInDir)
  335. {
  336.     PROTO_initObjSelectByRef(getObj(selID), strObj, bUseCP, bDirectRow, bRoutedMode, bOnlyInDir)
  337. }
  338.  
  339. function PROTO_initObjSelectByRef(objSelect, strObj, bUseCP, bDirectRow, bRoutedMode, bOnlyInDir)
  340. {
  341.     if ( objSelect )
  342.     {
  343.         clearOptionsDOM( objSelect );
  344.         
  345.         addOptionDOM(objSelect, '', getStr('fw','STR_NRE_SEL_PROT'))
  346.         if ( bDirectRow )
  347.             addOptionDOM(objSelect, '', entitiesToStr(getStr('','STR_OPT_SEL_SPEC_DIR')), COLOR_DIRECT_ROW )
  348.                     
  349.         if ( bUseCP && !bRoutedMode)
  350.         {
  351.             addOptionDOM(objSelect, '', getStr('','STR_OPT_SEL_USER_OBJ'), COLOR_DB_ROW);
  352.             addPROTOOptionListDOM( objSelect, true, bRoutedMode, bOnlyInDir );
  353.             addOptionDOM(objSelect, '', getStr('','STR_OPT_SEL_COMMON_OBJ'), COLOR_DB_ROW);
  354.         }
  355.  
  356.         addPROTOOptionListDOM( objSelect, false, bRoutedMode, bOnlyInDir );
  357.         
  358.         if ( strObj )
  359.             objSelect.value = strObj;
  360.             
  361.         if ( !objSelect.value )
  362.             objSelect.selectedIndex = 0;
  363.     }
  364.  
  365. }
  366.  
  367. function PROTO_ShowEditDlg(strObjID, bClientParser, bOnlyForRouted)
  368. {
  369.     external.CfgRegValueString("fwn-transport-edit.html_params") = "?transportid=" + escape(strObjID) + "&cp=" + bClientParser;
  370.     
  371.     var arParams = new Array();
  372.     
  373.     arParams[0] = external;
  374.     arParams[1] = bOnlyForRouted;
  375.     
  376.     var sFeatures="dialogHeight: 290px; dialogWidth: 400px; help:no; status:no; resizable:no; center:yes;";
  377.  
  378.     var arRetVal = window.showModalDialog( '../firewall/fwn-transport-edit.html', arParams, sFeatures );
  379.     
  380.     if ( arRetVal && arRetVal[0] && arRetVal[1])
  381.         return arRetVal[1];
  382.         
  383.     return '';
  384. }
  385.  
  386. // We do not know if it is from server/client database! Server database is preferred.
  387. function PROTO_editObjFromEditRule( strObjID, bClientRule )
  388. {
  389.     if ( !strObjID )
  390.         return; 
  391.         
  392.     if ( isSPEditable() )
  393.     {
  394.         var definitionList = getDefinitionList(false);
  395.  
  396.         try
  397.         {
  398.             var definition = definitionList.Get( strObjID );
  399.             
  400.             PROTO_ShowEditDlg(strObjID);
  401.             return;
  402.         }
  403.         catch (e)
  404.         {
  405.         }
  406.     }
  407.     
  408.     if ( bClientRule )
  409.     {
  410.         var definitionList = getDefinitionList(true);
  411.  
  412.         try
  413.         {
  414.             var definition = definitionList.Get( strObjID );
  415.             
  416.             PROTO_ShowEditDlg(strObjID, true);
  417.             return;
  418.         }
  419.         catch (e)
  420.         {
  421.         }
  422.     }
  423.     alert( processMsg( getStr('','STR_MSG_CANNOT_EDIT_PRE_OBJ'), strObjID ));
  424. }
  425.  
  426. function PROTO_addObjToSelect(selID, bUseCP, bDirectRow, bRoutedMode, bOnlyInDir)
  427. {
  428.     var bClientParser = !isSPEditable();
  429.     var strNewObj = PROTO_ShowEditDlg('', bClientParser, bRoutedMode);
  430.     
  431.     if ( strNewObj )
  432.         PROTO_initObjSelect(selID, strNewObj, bUseCP, bDirectRow, bRoutedMode, bOnlyInDir);
  433. }
  434. /////////  time functions /////////////////
  435. function TIME_initObjSelect(selID, strObj, bDirectRow)
  436. {
  437.     TIME_initObjSelectByRef(getObj(selID), strObj, bDirectRow)
  438. }
  439.  
  440. function TIME_initObjSelectByRef(objSelect, strObj, bDirectRow)
  441. {
  442.     if ( objSelect )
  443.     {
  444.         clearOptionsDOM( objSelect );
  445.         
  446.         addOptionDOM(objSelect, '*', '*')
  447.         if ( bDirectRow )
  448.             addOptionDOM(objSelect, '', entitiesToStr(getStr('','STR_OPT_SEL_SPEC_DIR')), COLOR_DIRECT_ROW )
  449.                     
  450.         addTimeOptionListDOM( objSelect );
  451.         
  452.         if ( strObj )
  453.             objSelect.value = strObj;
  454.             
  455.         if ( !objSelect.value )
  456.             objSelect.selectedIndex = 0;
  457.     }
  458. }
  459.  
  460. // We do not know if it is from server/client database! Server database is preferred.
  461. function TIME_editObjFromEditRule( strObjID )
  462. {
  463.     if ( !strObjID || strObjID == '*')
  464.         return; 
  465.         
  466.     if ( isSPEditable() )
  467.     {
  468.         var definitionList = getDefinitionList(false);
  469.  
  470.         try
  471.         {
  472.             var definition = definitionList.Get( strObjID );
  473.             var strIntervals = '';
  474.             
  475.             var itemEnum = new Enumerator(definition.ItemList);
  476.             itemEnum.moveFirst();
  477.                     
  478.             if (!itemEnum.atEnd())
  479.             {
  480.                 var item = itemEnum.item();
  481.                 strIntervals = item.Content;
  482.             }
  483.             
  484.             TIME_ShowEditDlg(strObjID, strIntervals);
  485.             
  486.             return;
  487.         }
  488.         catch (e)
  489.         {
  490.         }
  491.     }
  492.     
  493.     alert( processMsg( getStr('','STR_MSG_CANNOT_EDIT_PRE_OBJ'), strObjID ));
  494. }
  495.  
  496. function TIME_addObjToSelectByRef(objSelect, bDirectRow)
  497. {
  498.     var strNewObj = TIME_ShowEditDlg('','');
  499.     
  500.     if ( strNewObj )
  501.         TIME_initObjSelectByRef(objSelect, strNewObj, bDirectRow);
  502. }
  503.  
  504. function parseProtocolInterval( iProtocols )
  505. {
  506.     var iProtFrom = iProtocols % 65536;
  507.     var iProtTo = (iProtocols - iProtFrom) / 65536;
  508.  
  509.     return ( iProtFrom == iProtTo? iProtTo : iProtFrom + "-" + iProtTo );
  510. }
  511.  
  512. function parsePortInterval( iFrom, iTo )
  513. {
  514.     if (iFrom == 0 && iTo == 65535)
  515.         return "*";
  516.     else if (iFrom == iTo)
  517.         return iTo;
  518.     else
  519.         return iFrom + "-" + iTo;
  520. }
  521.  
  522. function parsePortIntervalToCtrl( iFrom, iTo, oFrom, oTo, oSelType )
  523. {
  524.     if (iFrom == 0 && iTo == 65535)
  525.         oSelType.value = '*';
  526.     else if (iFrom == iTo)
  527.     {
  528.         oFrom.value = iFrom;
  529.         oSelType.value = 'single';
  530.     }
  531.     else
  532.     {
  533.         oFrom.value = iFrom;
  534.         oTo.value = iTo;
  535.         oSelType.value = 'range';
  536.     }
  537. }
  538.  
  539. // Flags for ldap rules
  540. function LDAPRuleFlags( strFlags )
  541. {
  542.     this.init(strFlags);
  543. }
  544.  
  545. LDAPRuleFlags.prototype.init = function(strFlags) 
  546. {
  547.     var arList = new Array();
  548.     
  549.     if ( strFlags )
  550.     {
  551.         if ( strFlags.substring(0,3) == '@@:' )
  552.         {
  553.             strFlags = strFlags.substring(3);
  554.             arList = strFlags.split(";");
  555.         }
  556.     }
  557.     
  558.     
  559.     this.isMaster = (arList[0] && (arList[0] == 'm'));
  560.     this.isSlave = !this.isMaster;
  561.     this.oppositeRuleID = (arList[1]? arList[1] : '');
  562. }
  563.  
  564. LDAPRuleFlags.prototype.setMaster = function( bMaster )
  565. {
  566.     this.isMaster = bMaster;
  567.     this.isSlave = !this.isMaster;
  568. }
  569.  
  570. LDAPRuleFlags.prototype.toString = function()
  571. {
  572.     return '@@:' + (this.isMaster? 'm' : 's') + ';' + (this.oppositeRuleID? this.oppositeRuleID : '');
  573. }
  574.  
  575. function getEvent( strConstEvent )
  576. {
  577.     if ( strConstEvent == 'Ignore' )
  578.         return getStr('','STR_AUDIT_IGNORE');
  579.     else if ( strConstEvent == 'Monitor' )
  580.         return getStr('','STR_AUDIT_MONITOR');
  581.     else if ( strConstEvent == 'Alert' )
  582.         return getStr('','STR_AUDIT_ALERT')
  583.     else
  584.         return strConstEvent;
  585. }
  586.  
  587. function getCFAccess(strAccess, bReplExists)
  588. {
  589.     if ( strAccess == 'Allow')
  590.     {
  591.         if ( bReplExists )
  592.             return getStr('fw','STR_HFR_AR_REPLACE');
  593.         else
  594.             return getAccess( strAccess );
  595.     }
  596.     else
  597.         return getAccess( strAccess );
  598. }
  599.  
  600. function getAccess( strConstAccess )
  601. {
  602.     if ( strConstAccess == 'Allow' )
  603.         return getStr('','STR_ACCESS_ALLOW');
  604.     else if ( strConstAccess == 'Prevent' )
  605.         return getStr('','STR_ACCESS_PREVENT');
  606.     else if ( strConstAccess == 'AskUser' )
  607.         return getStr('','STR_ACCESS_ASK');
  608.     else
  609.         return strConstAccess;
  610. }
  611.  
  612. // format is xxx.xxx.xxx.xxx where xxxx is number <0..255>
  613. function IP_checkIPv4Format( strIP )
  614. {
  615.     var arItems = strIP.split('.');
  616.     
  617.     if ( arItems.length != 4 )
  618.         return false;
  619.         
  620.     for (var i=0; i < 4; i++ )
  621.     {
  622.         var oRe = new RegExp("^[0-9]{1,3}$") ;
  623.         if ( !oRe.test(arItems[i]) )
  624.             return false;
  625.             
  626.         var iValue = parseInt(arItems[i]);
  627.         
  628.         if ( isNaN( iValue )) 
  629.             return false;
  630.             
  631.         if ( iValue > 255 )
  632.             return false;
  633.     }
  634.     
  635.     return true;
  636. }
  637.  
  638. function IP_checkIPv6Format( strIP )
  639. {
  640.     var arItems = strIP.split(':');
  641.     var bEmptyItem = false;
  642.     
  643.     if ( arItems.length > 8 )
  644.         return false;
  645.         
  646.     // get count of double-colon
  647.     var i = strIP.indexOf('::');
  648.     var cnt = 0;
  649.     while ( i != -1)
  650.     {
  651.         cnt++;
  652.         i = strIP.indexOf('::',i+1);
  653.     }
  654.         
  655.     if ( cnt > 1 ) // one double collon can be here
  656.         return false;
  657.         
  658.     for (var i=0; i < arItems.length; i++ )
  659.     {
  660.         if ( arItems[i] )
  661.         {
  662.             var oRe = new RegExp("^[0-9,a-f,A-F]{1,4}$") ;
  663.             if ( !oRe.test(arItems[i]) )
  664.             {
  665.                 return false;
  666.             }
  667.         }
  668.     }
  669.     
  670.     if ( arItems.length < 8 && (cnt==0) )
  671.     {
  672.         return false;
  673.     }
  674.     
  675.     return true;
  676. }
  677.  
  678. function IP_getPorts( oFrom, oTo, bRange, bNoMsgs )
  679. {
  680.     var strPorts = '';
  681.     
  682.     // must be number
  683.     if ( !isNumber(oFrom.value))
  684.     {
  685.         if ( !bNoMsgs )
  686.         {
  687.             alert(getStr('fw','STR_INVALID_PORT'))
  688.             setFocus(oFrom)
  689.         }
  690.         return '';        
  691.     }
  692.     
  693.     var iPortFrom = parseInt(oFrom.value);
  694.     
  695.     if ( bRange )  // range
  696.     {
  697.         // must be number
  698.         if ( !isNumber(oTo.value))
  699.         {
  700.             if ( !bNoMsgs )
  701.             {
  702.                 alert(getStr('fw','STR_INVALID_PORT'))
  703.                 setFocus(oTo)
  704.             }
  705.             return '';        
  706.         }
  707.         
  708.         var iPortTo = parseInt(oTo.value);
  709.         
  710.         // from must be lower then to
  711.         if ( iPortTo < iPortFrom)
  712.         {
  713.             if ( !bNoMsgs )
  714.             {
  715.                 alert(getStr('fw','STR_INVALID_PORT'))
  716.                 setFocus(oTo)
  717.             }
  718.             return '';        
  719.         }
  720.         
  721.         strPorts = iPortFrom + '-' + iPortTo;
  722.     }
  723.     else
  724.         strPorts = iPortFrom;
  725.         
  726.     return strPorts.toString();
  727. }
  728.  
  729. function PROTO_getProtNums( oFrom, oTo, bRange, bNoMsgs )
  730. {
  731.     var strOutProtNums = '';
  732.     
  733.     // must be number
  734.     if ( !isNumber(oFrom.value))
  735.     {
  736.         if ( !bNoMsgs )
  737.         {
  738.             alert(getStr('fw','STR_INVALID_PROTNUM'))
  739.             setFocus(oFrom)
  740.         }
  741.         return '';        
  742.     }
  743.     
  744.     // must be lower then 256
  745.     var iProtNumFrom = parseInt(oFrom.value);
  746.     if ( iProtNumFrom > 255 )
  747.     {
  748.         if ( !bNoMsgs )
  749.         {
  750.             alert(getStr('fw','STR_INVALID_PROTNUM'))
  751.             setFocus(oFrom)
  752.         }
  753.         return '';        
  754.     }
  755.     
  756.     if ( bRange )  // range
  757.     {
  758.         // must be number
  759.         if ( !isNumber(oTo.value))
  760.         {
  761.             if ( !bNoMsgs )
  762.             {    
  763.                 alert(getStr('fw','STR_INVALID_PROTNUM'))
  764.                 setFocus(oTo)
  765.             }
  766.             return '';        
  767.         }
  768.         
  769.         // must be lower then 256
  770.         var iProtNumTo = parseInt(oTo.value);
  771.         if ( iProtNumTo > 255 )
  772.         {
  773.             if ( !bNoMsgs )
  774.             {
  775.                 alert(getStr('fw','STR_INVALID_PROTNUM'))
  776.                 setFocus(oTo)
  777.             }
  778.             return '';        
  779.         }
  780.         
  781.         // from must be lower then to
  782.         if ( iProtNumTo < iProtNumFrom)
  783.         {
  784.             if ( !bNoMsgs )
  785.             {
  786.                 alert(getStr('fw','STR_INVALID_PROTNUM'))
  787.                 setFocus(oTo)
  788.             }
  789.             return '';        
  790.         }
  791.         
  792.         strOutProtNums = iProtNumFrom + '-' + iProtNumTo;
  793.     }
  794.     else
  795.         strOutProtNums = iProtNumFrom;
  796.         
  797.     return strOutProtNums;
  798. }
  799.